\chapter{Requisitos y casos de uso}

%--------------------------------------------------------------------------

\section{Requisitos}

A continuación presentamos los requisitos que tenemos a fecha 14/05/2011:

\subsection{Requisitos funcionales}

\begin{enumerate}
\item Mostrar información general del seminario.
\item Mostrar mapa con información y localización.
	\begin{enumerate}
	\item Información y localización del lugar donde se realiza el seminario.
	\item Información y localización de puntos de interés.
	\end{enumerate}
\item Mostrar programa de actividades.
	\begin{enumerate}
	\item Añadir evento al calendario, enviar evento por correo y publicar evento con Facebook y Twitter.
	\end{enumerate}
\item Mostrar actividad en curso y siguiente.
\item Mostrar últimas noticias. 
\end{enumerate}

\subsection{Requisitos no funcionales}

\begin{enumerate}
\item Aplicación para iPhone.
\item Aplicación tipo \emph{tabBar}.
\item Aplicación ligera y rápida para que cargue rápido. Una característica muy importante de las aplicaciones para móviles y en concreto para iPhone es que la ejecución de las aplicaciones es muy corta. Por tanto, es importante que la aplicación cargue lo más rápidamente posible.
\item Interfaz atractiva y agradable, además de simple e intuitiva.
\end{enumerate}

%--------------------------------------------------------------------------

\section{Modelo de casos de uso}

\begin{figure}[htbp]
\begin{center}
\includegraphics[width=16.0cm]{img/requisitos/Diagramadecasodeuso}
\end{center}
\caption{Diagrama de casos de uso.}
\end{figure}

% Incluir descripción del diagrama completo de casos de uso

\subsection{Actores}

\subsubsection{Usuario}
Un Usuario representa a toda persona que utiliza la apliación para informase sobre el seminario. 

\subsubsection{Seio}
Representa la base de datos con toda la información correspondiente al Seminario. Es compartida con otros sistemas, como una página web. Se accede a ella a través de servicios web.

\subsubsection{Google Geocoding}
API de Google que traduce direcciones en coordenadas geográficas ubicables en un mapa. 

\subsubsection{GPS}
Devuelve las coordenadas geográficas de dónde se encuentra el Usuario.

\subsubsection{Mail}
Encola un email en la bandeja de salida del cliente de correo por defecto del iPhone, Mail.

\subsubsection{Calendar}
Añade un evento al calendario del iPhone.

\subsubsection{Facebook}
Publica un mensaje en el muro de Facebook del Usuario.

\subsubsection{Twitter}
Publica un mensaje en el Twitter del Usuario.

\subsection{Casos de uso}

\subsubsection{Mostrar información general}
Un Usuario utiliza este caso de uso para obtener información general sobre el Seminario.

\subsubsection{Mostrar localización}
Muestra la localización de una dirección en un mapa.

\subsubsection{Mostrar localización seminario}
Muestra la localización del lugar donde se realiza el Seminario.

\subsubsection{Mostrar localización puntos interés}
Muestra la localización de puntos de interés para  un asistente al Seminario.

\subsubsection{Mostrar localización usuario}
Muestra en un mapa la localización del usuario.

\subsubsection{Mostrar info localización}
Muestra información sobre la localización donde se celebra el Seminario.

\subsubsection{Mostrar info punto interés}
Muestra información sobre un punto de interés.

\subsubsection{Mostrar programa}
Muestra el programa de actividades de todos los días que dura el Seminario.

\subsubsection{Mostrar actividad}
Muestra los detalles de una actividad del programa.

\subsubsection{Enviar actividad email}
Envía por email una actividad del Seminario.

\subsubsection{Añadir actividad calendario}
Añade un evento en el Calendario de iPhone con la actividad elegida.

\subsubsection{Publicar actividad Facebook}
Publica la actividad en el Muro de la cuenta de Facebook personal del Usuario.

\subsubsection{Publicar actividad Twitter}
Publica la actividad en la cuenta de Twitter personal del Usuario.

\subsubsection{Mostrar actividad en curso}
Muestra la actividad que está en curso dentro del programa de actividades del Seminario.

\subsubsection{Mostrar actividad siguiente}
Muestra la siguiente actividad dentro del programa de actividades del Seminario.

\subsubsection{Mostrar últimas noticias}
Muestra las últimas noticias con respecto al Seminario.

\subsubsection{Mostrar noticia}
Muestra los detalles de una noticia.

\subsubsection{Actualizar datos}
Actualiza los datos que no estén al día.

%--------------------------------------------------------------------------

\clearpage

\section{Especificación de los casos de uso}


\subsection{Mostrar información general}
Se muestra información general sobre el Seminario. En caso de no tener que actualizar los datos, porque ya tenemos la última versión, no se hace nada. En caso de error o de que no haya conexión a Internet tampoco se hace nada, se muestran los últimos datos válidos. Aquí se podría elegir entre avisar al usuario del error o no decir nada.

\subsubsection{Precondiciones}
No hay precondiciones.

\subsubsection{Flujo de eventos}
\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino básico}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita información general & 2. Muestra información general \\
\hline
 & 3. [P. inclusión ''Actualizar datos''] \\
 & 4. Muestra información general con datos actualizados \\
\hline
\hline
\end{tabular}

\subsubsection{Postcondiciones}
El caso de uso termina cuando se muestran los datos actualizados o los últimos datos válidos.

\clearpage

\subsection{Mostrar localización}
Muestra la localización de una dirección en un mapa.

\subsubsection{Precondiciones}
Es necesario que haya conexión a Internet. 

\subsubsection{Flujo de eventos}
\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino básico}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita la localización de una dirección & 2. Traduce dirección en coordenadas geográficas con Google Geocoding. \\
\hline
 & 3. Muestra localización en un mapa \\
\hline
\hline
\end{tabular}

\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino alternativo 1. No hay conexión a Internet}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita la localización de una dirección & 2. Muestra mensaje de error \\
\hline
\hline
\end{tabular}

\subsubsection{Postcondiciones}
Se muestra la localización de la dirección en un mapa.


\clearpage

\subsection{Mostrar localización seminario}
Se muestra la localización del lugar donde se celebra el Seminario.

\subsubsection{Precondiciones}
Es necesario disponer de conexión a Internet.

\subsubsection{Flujo de eventos. Camino básico}
Igual que caso de uso ''Mostrar localizacion''. 

\subsubsection{Postcondiciones}
Se muestra la localización del lugar donde se celebra el Seminario.


\clearpage

\subsection{Mostrar puntos interés}
Se muestra la localización de puntos de interés para los asistentes al Seminario.

\subsubsection{Precondiciones}
Necesario disponer de conexión a Internet.

\subsubsection{Flujo de eventos. Camino básico}
Igual que caso de uso ''Mostrar localizacion''. 

\subsubsection{Postcondiciones}
Se muestra la localización de puntos de interés en un mapa.


\clearpage

\subsection{Mostrar localización usuario}
Muestra la localización del usuario en un mapa.

\subsubsection{Precondiciones}
Disponer de conexión a Internet. Tener activado el GPS del dispositivo y permitir a la aplicación acceder a estos datos. Tener cobertura GPS.

\subsubsection{Flujo de eventos. Camino básico}
\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino básico}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita la localización de uno mismo. & 2. Activa el GPS. \\
\hline
 & 3. Muestra localización del usuario en un mapa. \\
\hline
\hline
\end{tabular}

\subsubsection{Flujo de eventos. Camino alternativo 1}
\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino básico}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita la localización de uno mismo. & 2. No se puede activar el GPS. \\
\hline
 & 3. Muestra mensaje de error. \\
 \hline
& 4. Deshabilita la opción de autolocalización. \\
\hline
\hline
\end{tabular}

\subsubsection{Postcondiciones}
Muestra la localización del usuario en un mapa.


\clearpage

\subsection{Mostrar info localización}
Muestra información sobre la localización del Seminario.
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Mostrar info punto interés}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}




\clearpage

\subsection{Mostrar programa}
Muestra el programa completo de actividades del Seminario.

\subsubsection{Precondiciones}
No hay precondiciones.

\subsubsection{Flujo de eventos}
\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino básico}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita programa & 2. Muestra el programa de actividades \\
\hline
 & 3. [P. inclusión ''Actualizar datos''] \\
\hline
 & 4. Muestra el programa de actividades con datos actualizados \\
\hline
\hline
\end{tabular}

\subsubsection{Postcondiciones}
Muestra el programa de actividades ordenado cronológicamente.



\clearpage

\subsection{Mostrar actividad}
Muestra los detalles de una actividad del programa.

\subsubsection{Precondiciones}
No hay precondiciones.

\subsubsection{Flujo de eventos}
\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino básico}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita detalles de una actividad & 2. Muestra los detalles de la actividad \\
\hline
\hline
\end{tabular}

\subsubsection{Postcondiciones}

\clearpage

\subsection{Enviar actividad email}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Añadir actividad calendario}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Publicar actividad Facebook}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Publicar actividad Twitter}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Mostrar actividad en curso}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Mostrar actividad siguiente}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Mostrar últimas noticias}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Mostrar noticia}
\subsubsection{Precondiciones}
\subsubsection{Flujo de eventos. Camino básico}
\subsubsection{Flujo de eventos. Caminos alternativos}
\subsubsection{Postcondiciones}

\clearpage

\subsection{Actualizar datos}
Actualiza los datos si es necesario.

\subsubsection{Precondiciones}
No hay precondiciones.

\subsubsection{Flujo de eventos}
\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino básico}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita actualizar los datos & 2. Comprueba la fecha de los datos con la fecha de última actualización \\
\hline
& 3. Actualiza los datos.\\
\hline
\hline
\end{tabular}

\begin{tabular}{|| p{7cm} | p{7cm} ||}
\hline
\hline
\multicolumn{2}{||l||}{Camino alternativo 1. Datos actualizados.}\\
\hline
\hline
\bf Usuario & \bf Sistema \\
\hline
1. Solicita actualizar los datos & 2. Comprueba la fecha de los datos con la fecha de última actualización \\
\hline
3. No hace nada. \\
\hline
\hline
\end{tabular}

\subsubsection{Postcondiciones}
Deja los datos actualizados.

%--------------------------------------------------------------------------

\section{Descripción de la arquitectura}

\begin{itemize}
\item El sistema se va a desarrollar para la plataforma iOS SDK 4. 
\item El acceso a la BD del SEIO se accederá a través de un servicio web. Nos hace independiente la aplicación de la BD.
\item La aplicación seguirá el patrón arquitectónico MVC (Modelo-Vista-Controlador). 
\end{itemize}

%--------------------------------------------------------------------------

\section{Glosario}

%--------------------------------------------------------------------------

\section{Prototipo de interfaz de usuario}

